dynamic class classes.GameAI
{
    var CHOSEN_TERR_A;
    var CHOSEN_TERR_B;
    var GAME_CLASS;
    var PLAYER;

    function GameAI(gc)
    {
        this.GAME_CLASS = gc;
    }

    function cleverMove(player, oldID)
    {
        if (!this.GAME_CLASS.isGameFinished() && _global.gameAccess == true) 
        {
            if (_global.GAME_PAUSE == false) 
            {
                if (player) 
                {
                    this.PLAYER = player;
                }
                else 
                {
                    player = this.PLAYER;
                }
                var __reg3 = undefined;
                var __reg10 = undefined;
                var __reg5 = false;
                var __reg9 = 0;
                while (__reg9 < this.GAME_CLASS.MAP.TERRITORIES_ARR.length && !__reg5) 
                {
                    if (this.GAME_CLASS.MAP.TERRITORIES_ARR[__reg9].player == player) 
                    {
                        __reg3 = this.GAME_CLASS.MAP.TERRITORIES_ARR[__reg9];
                        var __reg8 = this.neighboursArr(__reg3);
                        var __reg6 = 0;
                        while (__reg6 < __reg8.length && !__reg5) 
                        {
                            if (__reg8[__reg6].player != __reg3.player) 
                            {
                                if (__reg3.unitsNO - __reg8[__reg6].unitsNO >= 2) 
                                {
                                    var __reg7 = this.neighboursArr(__reg8[__reg6]);
                                    var __reg4 = 0;
                                    while (__reg4 < __reg7.length && !__reg5) 
                                    {
                                        if (__reg7[__reg4].player != __reg3.player && __reg3.unitsNO - 1 - __reg7[__reg4].unitsNO >= 2) 
                                        {
                                            __reg10 = __reg8[__reg6];
                                            __reg5 = true;
                                        }
                                        ++__reg4;
                                    }
                                }
                            }
                            ++__reg6;
                        }
                    }
                    ++__reg9;
                }
                if (!__reg5) 
                {
                    __reg9 = 0;
                    while (__reg9 < this.GAME_CLASS.MAP.TERRITORIES_ARR.length && !__reg5) 
                    {
                        if (this.GAME_CLASS.MAP.TERRITORIES_ARR[__reg9].player == player) 
                        {
                            __reg3 = this.GAME_CLASS.MAP.TERRITORIES_ARR[__reg9];
                            if (__reg3.unitsNO > 1) 
                            {
                                __reg8 = this.neighboursArr(__reg3);
                                __reg6 = 0;
                                while (__reg6 < __reg8.length && !__reg5) 
                                {
                                    if (__reg8[__reg6].player != __reg3.player) 
                                    {
                                        if (__reg3.unitsNO >= __reg8[__reg6].unitsNO) 
                                        {
                                            __reg10 = __reg8[__reg6];
                                            __reg5 = true;
                                        }
                                    }
                                    ++__reg6;
                                }
                            }
                        }
                        ++__reg9;
                    }
                }
                if (__reg5) 
                {
                    this.CHOSEN_TERR_A = __reg3;
                    this.CHOSEN_TERR_B = __reg10;
                    this.GAME_CLASS.MAP.territoryA(this.CHOSEN_TERR_A);
                    this.GAME_CLASS.MAP.territoryB(this.CHOSEN_TERR_B);
                    _global.setTimeout(mx.utils.Delegate.create(this.GAME_CLASS.MAP, this.GAME_CLASS.MAP.fightAB), 700);
                }
                else 
                {
                    this.GAME_CLASS.addUnits();
                }
                return;
            }
            _global.setTimeout(mx.utils.Delegate.create(this, this.cleverMove), 100);
        }
    }

    function neighboursArr(terr)
    {
        var __reg6 = new Array();
        var __reg8 = terr.arr;
        var __reg7 = 0;
        while (__reg7 < __reg8.length) 
        {
            var __reg5 = __reg8[__reg7];
            var __reg3 = [__reg5.TL, __reg5.L, __reg5.TR, __reg5.BR, __reg5.R, __reg5.BL];
            var __reg1 = 0;
            while (__reg1 < __reg3.length) 
            {
                if (__reg3[__reg1]._territory != __reg5._territory && __reg3[__reg1]._territory != undefined) 
                {
                    var __reg4 = false;
                    var __reg2 = 0;
                    while (__reg2 < __reg6.length && !__reg4) 
                    {
                        if (__reg6[__reg2] == __reg3[__reg1]._territory) 
                        {
                            __reg4 = true;
                        }
                        ++__reg2;
                    }
                    if (!__reg4) 
                    {
                        __reg6.push(__reg3[__reg1]._territory);
                    }
                }
                ++__reg1;
            }
            ++__reg7;
        }
        return __reg6;
    }

    function markTerr(terr, st)
    {
        var __reg1 = 0;
        for (;;) 
        {
            if (__reg1 >= terr.arr.length) 
            {
                return;
            }
            terr.arr[__reg1]._alpha = 100 - st * 10;
            ++__reg1;
        }
    }

    function colorMC(mc, cl)
    {
        var __reg1 = new Color(mc);
        __reg1.setRGB(cl);
    }

}
